package com.shujia.scala

object Demo23Implicit {
  def main(args: Array[String]): Unit = {

    /* val str: String = "100"

     //显示转换
     val i: Int = str.toInt

     println(i)*/


    /**
      * 隐式转换
      *
      * 1  隐式转换方法
      * 2  隐式转换变量
      * 3  隐式转换类
      */


    implicit def stringToInt(s: String): Int = {
      println("隐式转换方法被调用")
      Integer.parseInt(s)
    }


    implicit def doubleToInt(d: Double): Int = {
      println("隐式转换方法被调用")

      d.toInt
    }


    def print(j: Int) = {
      println(j)
    }


    print("100")
    //相当于在字符串外面套上了隐式转换方法
    print(stringToInt("100"))


    print(1.4)

    /**
      * 隐式转换方法和方法名无关,和参数类型返回值类型有关
      * 同一个作用域中不能存在两个类型一样的隐式转换
      *
      *
      */

  }
}
